Skip to main content

Docker CMD, EntryPoint Pod command, args

CMD vs ENTRYPOINT

docker run <image-name> [COMMAND]

docker run <image-name> 명령을 실행하면, CMDENTRYPOINT 명령이 실행됩니다. CMDdocker run 명령어에 전달된 인자로 덮어쓸 수 있습니다. ENTRYPOINTdocker run 명령어에 전달된 인자로 덮어쓸 수 없습니다.

OnlyCmdDockerfile
# docker build -t only-cmd .
FROM ubuntu:22.04

CMD sleep 5
  • docker run only-cmd sleep 10: sleep 10 명령이 실행됩니다.
OnlyEntrypointDockerfile
# docker build -t only-entrypoint .
FROM ubuntu:22.04

ENTRYPOINT ["sleep"]
  • docker run only-entrypoint 10: ENTRYPOINT 명령어와 CMD 명령어가 합쳐져서 sleep 10 명령이 실행됩니다.
CmdAndEntrypointDockerfile
# docker build -t cmd-and-entrypoint .
FROM ubuntu:22.04

ENTRYPOINT ["sleep"]

CMD ["5"]
  • docker run cmd-and-entrypoint 10: sleep 10 명령이 실행됩니다.
  • docker run --entrypoint sleep2.0 cmd-and-entrypoint 10: sleep2.0 10 명령이 실행됩니다.

위의 내용은 Dockerfile을 통해 docker image를 생성하고, docker run 명령어를 통해 실행하는 방법을 설명하였습니다. 이때, CMDENTRYPOINT 명령어를 사용하여 이미지를 생성하였습니다. CMDENTRYPOINT 명령어는 이미지를 실행할 때 실행되는 명령어를 지정할 수 있습니다.

POD

pod-1.yaml
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- name: mycontainer
image: cmd-and-entrypoint
args: [ "10" ]
  • kubectl apply -f pod-1.yaml: sleep 10 명령이 실행됩니다.
pod-2.yaml
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- name: mycontainer
image: cmd-and-entrypoint
command:
- "sleep2.0"
args: [ "10" ]
  • kubectl apply -f pod-2.yaml: sleep2.0 10 명령이 실행됩니다.